package co.com.claro.vista.action.cliente;

import co.com.claro.comun.fabrica.LanzarFabrica;
import co.com.claro.comun.od.FabricaTo;
import co.com.claro.comun.util.util;
import co.com.claro.servicio.negocio.ICatalogoServicio;
import co.com.claro.servicio.negocio.IClienteServicio;
import co.com.claro.servicio.od.CatalogoOd;
import co.com.claro.servicio.od.ClienteOd;
import co.com.claro.servicio.od.DataJson;
import co.com.claro.servicio.od.UsuarioOd;
import com.google.gson.Gson;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.log4j.Logger;
import org.apache.struts2.interceptor.SessionAware;
import org.apache.struts2.util.ServletContextAware;

import javax.servlet.ServletContext;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;


/**
 * Created by IntelliJ IDEA.
 * User: Manuel Serrano
 * Date: 21/05/2010
 * Time: 11:33:39 AM
 * To change this template use File | Settings | File Templates.
 */

public class ClienteAction extends ActionSupport implements ServletContextAware, SessionAware,Serializable {
    private static final Logger logger = Logger.getLogger(ClienteAction.class);
    private FabricaTo fabrica;
    private UsuarioOd usuario;
    private IClienteServicio clienteServicio;
    private String mensaje;
    private DataJson data=new DataJson();
    private String codigo;
    private Map session;
    private List<ClienteOd> clientes;
    private List<String> autocompletar;
    private List<String> tabla;
    private Gson gson = new Gson();
    private String objetoJson;
    private String valor;
    private String accion;






    public ClienteAction() throws ClassNotFoundException, InvocationTargetException, NoSuchMethodException, IllegalAccessException, InstantiationException {
        LanzarFabrica.getInstancia(this);
    }



    public String execute() throws Exception {
        final String origen = "CatalogoAction.execute";
        long time;
        UsuarioOd usuario;
        try{

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.act")+ClienteAction.class+" | "+origen);

            time = System.currentTimeMillis ();


            time = System.currentTimeMillis () - time;

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.exitos.act")+ClienteAction.class+" | "+origen+" | "+time);



        }catch (Exception e){
            logger.error(e);
        }
        return INPUT;
    }



    public String obtenerClientes() throws Exception {
        final String origen = "loginAccion.obtenerCatalogosEnFlujo";
        long time;
        List<UsuarioOd> usuarios;
        try{

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.act")+ClienteAction.class+" | "+origen);

            time = System.currentTimeMillis ();

            clientes=getClienteServicio().obtenerClientes("1", accion,valor);
            tabla=util.getTabTable(ClienteOd.class);


            codigo="OK";

            time = System.currentTimeMillis() - time;

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.exitos.act")+ClienteAction.class+" | "+origen+" | "+time);



        }catch (Exception e){
            logger.error(e);
        }
        return SUCCESS;
    }


    public String obtenerAutocomletar() throws Exception {
        final String origen = "loginAccion.obtenerAutocomletar";
        long time;
        List<UsuarioOd> usuarios;
        try{

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.act")+ClienteAction.class+" | "+origen);

            time = System.currentTimeMillis ();

            autocompletar=getClienteServicio().obtenerClientesAutocompletar("1",valor);

            codigo="OK";

            time = System.currentTimeMillis() - time;

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.exitos.act")+ClienteAction.class+" | "+origen+" | "+time);



        }catch (Exception e){
            logger.error(e);
        }
        return SUCCESS;
    }





    public FabricaTo getFabrica() {
        return fabrica;
    }

    public void setFabrica(FabricaTo fabrica) {
        this.fabrica = fabrica;
    }


    public void setServletContext(ServletContext context) {
        //To change body of implemented methods use File | Settings | File Templates.
    }

    public void setSession(Map<String, Object> session) {
        //To change body of implemented methods use File | Settings | File Templates.
        this.session = session;
    }


    public UsuarioOd getUsuario() {
        return usuario;
    }

    public void setUsuario(UsuarioOd usuario) {
        this.usuario = usuario;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    public DataJson getData() {
        return data;
    }

    public void setData(DataJson data) {
        this.data = data;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public List<String> getTabla() {
        return tabla;
    }

    public void setTab(List<String> tab) {
        this.tabla = tab;
    }

    public void setTabla(List<String> tabla) {
        this.tabla = tabla;
    }

    public IClienteServicio getClienteServicio() {
        return clienteServicio;
    }

    public void setClienteServicio(IClienteServicio clienteServicio) {
        this.clienteServicio = clienteServicio;
    }

    public List<ClienteOd> getClientes() {
        return clientes;
    }

    public void setClientes(List<ClienteOd> clientes) {
        this.clientes = clientes;
    }

    public String getObjetoJson() {
        return objetoJson;
    }

    public void setObjetoJson(String objetoJson) {
        this.objetoJson = objetoJson;
    }

    public String getValor() {
        return valor;
    }

    public void setValor(String valor) {
        this.valor = valor;
    }

    public String getAccion() {
        return accion;
    }

    public void setAccion(String accion) {
        this.accion = accion;
    }

    public List<String> getAutocompletar() {
        return autocompletar;
    }

    public void setAutocompletar(List<String> autocompletar) {
        this.autocompletar = autocompletar;
    }
}





